home *** CD-ROM | disk | FTP | other *** search
- /***** Ball.h *****/
- #ifndef _H_Ball
- #define _H_Ball
- #include "BallAux.h"
-
- typedef enum AxisSet{NoAxes, CameraAxes, BodyAxes, OtherAxes, NSets} AxisSet;
- typedef float *ConstraintSet;
- typedef struct {
- HVect center;
- double radius;
- Quat qNow, qDown, qDrag;
- HVect vNow, vDown, vFrom, vTo, vrFrom, vrTo;
- HMatrix mNow, mDown;
- Bool showResult, dragging;
- ConstraintSet sets[NSets];
- int setSizes[NSets];
- AxisSet axisSet;
- int axisIndex;
- } BallData;
-
- /* Public routines */
- void Ball_Init(BallData *ball);
- void Ball_Place(BallData *ball, HVect center, double radius);
- void Ball_Mouse(BallData *ball, HVect vNow);
- void Ball_UseSet(BallData *ball, AxisSet axisSet);
- void Ball_ShowResult(BallData *ball);
- void Ball_HideResult(BallData *ball);
- void Ball_Update(BallData *ball);
- void Ball_Value(BallData *ball, HMatrix mNow);
- void Ball_BeginDrag(BallData *ball);
- void Ball_EndDrag(BallData *ball);
- void Ball_Draw(BallData *ball);
- /* Private routines */
- void DrawAnyArc(HVect vFrom, HVect vTo);
- void DrawHalfArc(HVect n);
- void Ball_DrawConstraints(BallData *ball);
- void Ball_DrawDragArc(BallData *ball);
- void Ball_DrawResultArc(BallData *ball);
- #endif
-